node.jsのいろいろなモジュール24 – dnodeでリモート関数呼び出し
node.jsでRPCサーバ
今回紹介するdnodeモジュールは、node.jsをRPCサーバにするためのモジュールです。 サーバ側で関数を定義しておけば、dnodeサーバへ接続してその関数を呼び出すことができます。 また、dnodeはjavascript以外のクライアントもあります。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.4
- Node.js : v0.8.15
- npm : 1.1.66
適当なディレクトリを作成し、そこでnpmを使用して必要モジュールをインストールします。
% mkdir dnode % cd dnode % npm install dnode
dnodeを動かしてみる
まずはサーバ側の実装です。dnode関数内で、クライアントから使用したい関数を定義します。 ここではgreetという名前の関数を定義しています。
//app.js var dnode = require('dnode'); var server = dnode({ greet : function (n, cb) { cb('hello,' + n); } }); server.listen(3000);
サーバ側が定義できたら次はクライアント側(client.js)を作成します。 dnodeサーバへ接続し、サーバ側で定義したgreet関数を呼び出しています。
//client.js var dnode = require('dnode'); var d = dnode.connect(3000); d.on('remote', function (remote) { remote.greet('syuta', function (say) { console.log('greet:' + say); d.end(); }); });
dnodeサーバを起動し、クライアントを実行して関数を呼び出してみましょう。 問題なく実行できることがわかります。
//dnodeサーバ起動(バックグラウンド) % node app.js & //クライアント実行 % node client.js
まとめ
dnodeモジュールを使って、簡単にRPCサーバを実装することができました。 javascript以外にもJava用クライアントとかRuby用クライアント等があるので、そこから接続することもできます。